package com.ld.common.util.notice;

import java.util.LinkedHashMap;
import java.util.Map;

import com.ld.shieldsb.common.core.model.Result;
import com.ld.shieldsb.common.core.util.StringUtils;

/**
 * 通知管理器，用于统一管理通知
 * 
 * @ClassName CacheManager
 * @author <a href="mailto:donggongai@126.com" target="_blank">吕凯</a>
 * @date 2019年1月14日 下午12:29:35
 *
 */
public class NoticeManager {
    private static final Map<String, NoticeModel> CACHE_MAP = new LinkedHashMap<>(); // 缓存

    /**
     * 注册缓存
     * 
     * @Title register
     * @author 吕凯
     * @date 2019年1月14日 下午1:00:27
     * @param cache
     * @return Result
     */
    public static Result register(NoticeModel cache) {
        Result result = new Result();
        result.setSuccess(false);
        String keyCode = cache.getKeyCode();
        if (StringUtils.isBlank(cache.getName())) {
            result.setMessage("name不能为空！");
            return result;
        }
        if (StringUtils.isBlank(keyCode)) {
            result.setMessage("识别码(KeyCode)不能为空！");
            return result;
        }
        NoticeModel cacheModel = CACHE_MAP.get(keyCode);
        if (cacheModel != null) {
            result.setMessage("识别码(KeyCode)为" + keyCode + "的通知已经存在！名称为：" + cacheModel.getName());
            return result;
        }
        CACHE_MAP.put(keyCode, cache);
        result.setSuccess(true);
        return result;
    }

    /**
     * 获取缓存
     * 
     * @Title get
     * @author 吕凯
     * @date 2019年1月14日 下午1:00:16
     * @param keyCode
     * @return CacheModel
     */
    public static NoticeModel get(String keyCode) {
        NoticeModel cacheModel = CACHE_MAP.get(keyCode);
        return cacheModel;
    }

    /**
     * 返回所有的缓存模型
     * 
     * @Title getAllCaches
     * @author 吕凯
     * @date 2019年1月14日 下午1:25:05
     * @return Map<String,CacheModel>
     */
    public static Map<String, NoticeModel> getAllNoticeModels() {
        return CACHE_MAP;
    }

    /**
     * 移除
     * 
     * @Title remove
     * @author 吕凯
     * @date 2019年1月18日 上午8:37:15
     * @param keyCode
     * @return boolean
     */
    public static boolean remove(String keyCode) {
        return CACHE_MAP.remove(keyCode) != null;
    }

    /**
     * 清空
     * 
     * @Title clear
     * @author 吕凯
     * @date 2019年1月18日 上午8:37:04
     * @return boolean
     */
    public static boolean clear() {
        CACHE_MAP.clear();
        return true;
    }

}
